package com.liliudong.template.biz.service.sys;

import com.baomidou.mybatisplus.extension.service.IService;
import com.liliudong.template.common.dto.sys.SysDictItemAddDTO;
import com.liliudong.template.common.dto.sys.SysDictItemModifyDTO;
import com.liliudong.template.common.dto.sys.SysDictItemPageDTO;
import com.liliudong.template.common.entity.sys.SysDictItem;
import com.liliudong.template.common.vo.PageVO;
import com.liliudong.template.common.vo.sys.SysDictItemDetailVO;
import com.liliudong.template.common.vo.sys.SysDictItemPageVO;

import java.util.List;
import java.util.Map;

/**
 * 系统-字典值 服务
 *
 * @author ldli5
 * @date 2024-07-04 14:57:53
 */
public interface SysDictItemService extends IService<SysDictItem> {

	/**
	 * 添加
	 *
	 * @param sysDictItemAddDTO 新增dto
	 */
    void addOne(SysDictItemAddDTO sysDictItemAddDTO);

	/**
	 * 删除
	 *
	 * @param id 主键
	 */
    void deleteById(Long id);

    /**
     * 修改
     *
     * @param id 主键
     * @param sysDictItemModifyDTO 更新dto
     */
    void modifyById(Long id, SysDictItemModifyDTO sysDictItemModifyDTO);

    /**
     * 详情
     *
     * @param id 主键
     * @return {@link SysDictItemDetailVO }
     */
    SysDictItemDetailVO detailById(Long id);

    /**
     * 分页
     *
     * @param sysDictItemPageDTO 分页查询dto
     * @return {@link PageVO<SysDictItemPageVO> }
     */
    PageVO<SysDictItemPageVO> queryPage(SysDictItemPageDTO sysDictItemPageDTO);

	/**
	 * 按dict-id保存批处理
	 *
	 * @param dictId       dict id
	 * @param sysDictItems sys-dict项
	 */
	void saveBatchByDictId(Long dictId, List<SysDictItem> sysDictItems);

	/**
	 * 按dict id计数
	 *
	 * @param dictId dict id
	 * @return long
	 */
	long countByDictId(Long dictId);

	/**
	 * 按dict id删除
	 *
	 * @param dictId dict id
	 */
	void removeByDictId(Long dictId);

	/**
	 * 按dict id列出
	 *
	 * @param dictId dict id
	 * @return {@link List }<{@link SysDictItem }>
	 */
	List<SysDictItem> listByDictId(Long dictId);

	/**
	 * 按dict-ids列出
	 *
	 * @param dictIds dict-ids
	 * @return {@link Map }<{@link Long }, {@link List }<{@link SysDictItem }>>
	 */
	Map<Long, List<SysDictItem>> listMapsByDictIds(List<Long> dictIds);
}
